package com.makingTeam.rpc.rpc00;

import com.makingTeam.rpc.data.User;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Random;

/**
 * 一个RPC最最最简单的过程是客户端调用服务端的的一个方法,
 * 服务端返回执行方法的返回值给客服端。
 * 接下来我会以一个从数据库里取数据的例子来进行一次模拟RPC过程的一个完整流程。
 */
public class RPCClient {


    public static void main(String[] args) {
        try{
            Socket localhost = new Socket("localhost", 8899);
            ObjectOutputStream outputStream = new ObjectOutputStream(localhost.getOutputStream());
            ObjectInputStream inputStream = new ObjectInputStream(localhost.getInputStream());
            // 传给服务器id
            outputStream.writeInt(new Random().nextInt());
            outputStream.flush();
            // 服务器查询数据，返回对应的对象
            User user  = (User) inputStream.readObject();
            System.out.println("服务端返回的User:"+user);
        }catch (IOException | ClassNotFoundException e){
            e.printStackTrace();
            System.out.println("客户端启动失败");
        }
    }
}
